package apuesta;

import java.io.Serializable;

import jugador.Jugador;

import org.uqbar.commons.model.ObservableObject;

public class Apuesta extends ObservableObject implements Serializable{
	
	public static final String TIPO="tipo";
	public static final String FICHAS="cantidad";

	
	
	public void setNumero(int numero) {
		this.numero = numero;
	}

	private Jugador apostador;
	private TipoApuesta tipo;
	private int numero=0;
	private int cantidad;
	
	public Apuesta(Jugador j, TipoApuesta t, int nro, int cant){
		
		this.setApostador(j);
		this.tipo = t;
		this.numero = nro;
		this.cantidad = cant;
		System.out.println("Se generó la apuesta" + t.getClass().toString().replace("class apuesta.", "") + " de " + j.getNombre() + " de $" + cant + " para el numero " + nro); 
		
		
		
	}
	
	/*
	 * public Apuesta(Jugador jug, TipoApuesta par, int i) {
		this.setApostador(jug);
		this.setTipo(par);
		this.setCantidad(i);
	}
	*/

	public Apuesta() {
		
	}

	public boolean equals(Object obj){
		
		Apuesta a = (Apuesta)obj;
		
		return a.getApostador().equals(this.apostador) && a.getNumero() == this.numero && a.getTipo().equals(this.tipo);
		
	}
	
/*GETTERS & SETTER*/
	
	public TipoApuesta getTipo() {
		return tipo;
	}

	public void setTipo(TipoApuesta tipo) {
		this.tipo = tipo;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public int getCantidad() {
		return cantidad;
	}

	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
		this.setFieldValue(FICHAS, cantidad);
	}

	public void setApostador(Jugador apostador) {
		this.apostador = apostador;
	}

	public Jugador getApostador() {
		return apostador;
	}

		
/*METHODS*/		
	
	public boolean buscarGanadores(int numeroQueSalio) {
		
		return this.tipo.ganoCon(numeroQueSalio,this);
		
		 
	}

	public int cuantoPagas() {
		 
		return (this.getCantidad()* this.tipo.multiplicidad());
	}

	
}
